02-NodeJS설치배포

Node.js 설치 및 배포 (단순 웹 서버)

이 단계의 목표는 EC2 인스턴스에 데이터베이스 연결이 없는 간단한 "Hello, World" 웹 서버를 구축하고 실행하는 것입니다.

1. 프로젝트 폴더 생성

먼저, 애플리케이션 코드를 저장할 디렉토리를 생성합니다.

# webapp 디렉토리 아래에 nodejs-app 폴더를 생성합니다.
mkdir -p ~/webapp/nodejs-app

# 생성된 폴더로 이동합니다.
cd ~/webapp/nodejs-app

2. package.json 파일 생성

Node.js 프로젝트의 기본 정보를 담고 있는 package.json 파일을 생성합니다. 이 파일에는 프로젝트에 필요한 express와 같은 라이브러리(패키지) 정보가 포함됩니다.

# vi 편집기로 package.json 파일을 엽니다.
vi package.json

i를 눌러 입력 모드로 전환한 후, 아래 내용을 그대로 복사하여 붙여넣으세요.

{
  "name": "nodejs-webapp",
  "version": "1.0.0",
  "description": "Node.js on AWS",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.17.1",
    "mysql2": "^2.3.0"
  }
}

붙여넣은 후 Esc 키를 누르고 :wq 를 입력하여 저장하고 종료합니다.

3. 간단한 app.js 웹 서버 작성

이제 실제 웹 서버 역할을 하는 app.js 파일을 작성합니다.

# vi 편집기로 app.js 파일을 엽니다.
vi app.js

i를 눌러 입력 모드로 전환한 후, 아래의 "Hello, World" 코드를 복사하여 붙여넣으세요.

const express = require('express');
const app = express();
const port = 3000;

// 루트 경로('/')에 대한 GET 요청 처리
app.get('/', (req, res) => {
  res.send('Hello, World! My First Web Server on EC2!');
});

// 0.0.0.0 주소와 3000번 포트에서 서버 실행
app.listen(port, '0.0.0.0', () => {
  console.log(`Server is running on port ${port}. Open http://<Your-EC2-IP>:${port}`);
});

붙여넣은 후 Esc 키를 누르고 :wq 를 입력하여 저장하고 종료합니다.

4. Node.js 패키지 설치

package.json에 명시된 expressmysql2 라이브러리를 설치합니다.

# 현재 디렉토리(~/webapp/nodejs-app)에서 실행합니다.
npm install

5. PM2로 애플리케이션 실행

애플리케이션을 백그라운드에서 안정적으로 실행하기 위해 PM2를 사용합니다.

PM2 설치 (이미 설치했다면 생략)

sudo npm install -g pm2

PM2로 서버 시작

# PM2로 app.js를 'webapp'이라는 이름으로 시작합니다.
pm2 start app.js --name webapp

# 프로세스 상태를 확인합니다.
pm2 status

statusonline으로 표시되면 정상입니다.

6. 웹 애플리케이션 접속 테스트

서버가 정상적으로 실행되었는지 브라우저를 통해 확인합니다.

  1. 웹 브라우저를 열고 다음 주소로 접속:
    http://[EC2-Public-IP]:3000
    (예: http://3.34.123.45:3000)

  2. 정상 동작 확인:
    브라우저 화면에 "Hello, World! My First Web Server on EC2!" 메시지가 표시되면 성공입니다.

문제 해결: 접속이 안 될 경우

완료 체크리스트


단순 웹 서버 배포 완료!

이제 EC2 인스턴스 위에서 기본적인 웹 서버가 동작하고 있습니다.
다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week2-Dynamic-WebApp-Deployment/03-기본실습-NodeJS/03-RDS생성


관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week2-Dynamic-WebApp-Deployment/Week2-전체가이드